如何实现SSH断开后 进程仍然在后台运行 您所在的位置:网站首页 ssh 断开 如何实现SSH断开后 进程仍然在后台运行

如何实现SSH断开后 进程仍然在后台运行

2023-11-11 08:30| 来源: 网络整理| 查看: 265

当使用过 disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它。

但是还有一个问题,这种方法的操作对象是作业,如果我们在运行命令时在结尾加了"&"来使它成为一个作业并在后台运行,那么就万事大吉了,我们可以通过jobs命令来得到所有作业的列表。但是如果并没有把当前命令作为作业来运行,如何才能得到它的作业号呢?答案就是用 CTRL-z(按住Ctrl键的同时按住z键)了!

CTRL-z 的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec 来将它放入后台并继续运行。需要注意的是,如果挂起会影响当前进程的运行结果,请慎用此方法。

[root@DigMouse ~]# ping 51osos.com > /dev/null  ^Z [1]+  Stopped                 ping 51osos.com > /dev/null [root@DigMouse ~]# jobs [1]+  Stopped                 ping 51osos.com > /dev/null [root@DigMouse ~]# bg %1 [1]+ ping 51osos.com > /dev/null & [root@DigMouse ~]# jobs [1]+  Running                 ping 51osos.com > /dev/null & [root@DigMouse ~]# disown -h %1 复制代码 [root@DigMouse ~]# ps -ef | grep ping root     13716 13655  0 09:59 pts/0    00:00:00 ping 51osos.com root     13734 13655  0 10:01 pts/0    00:00:00 grep ping 复制代码 此时jobs还是能看到ping后台任务的。logout后在另一个终端测试 [root@DigMouse ~]# ps -ef | grep ping root     13716     1  0 09:59 ?        00:00:00 ping 51osos.com root     13754 13738  0 10:02 pts/1    00:00:00 grep ping 复制代码 此时Jobs无ping后台任务。PPID变成了1

5.screen命令

此命令非常强大。如果非常多的命令都需要忽略HUP命令,screen可以解决这一问题。screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。

用screen -dmS session name 来建立一个处于断开模式下的会话(并指定其会话名)。 用screen -list 来列出所有会话。 用screen -r session name 来重新连接指定会话。 用快捷键CTRL-a d 来暂时断开当前会话。 我的CentOS6.0上没有screen命令,不过可以使用yum安装。 [root@DigMouse ~]# yum list screen Available Packages screen.i686                         4.0.3-15.el6                         base [root@DigMouse ~]# yum install screen* 复制代码 Ok,系统有了screen命令了。 [root@DigMouse ~]# screen -r DigMouse [root@DigMouse ~]# ping 51osos.com > /dev/null & [1] 13789 [root@DigMouse ~]# pstree -H 13789 复制代码 此时 bash 是 screen 的子进程,而 screen 是 init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 信号自然不会影响到 screen 下面的子进程了。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有